home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer (Italian) 30 / PC Gamer IT CD 30 1-2.iso / MOTS / GAMEDATA / EPISODE / JKM_PCG.GOO / cog_s1l2_doorlocked1side.cog < prev    next >
Text File  |  1998-02-25  |  4KB  |  144 lines

  1. # Jedi Knight Cog Script
  2. #
  3. # s5l4_DOORLOCKED1SIDE.COG
  4. #
  5. # This script will handle a door that can be opened from
  6. # one side only. Once it has been opened once it will
  7. # open from both sides.
  8. #
  9. # You have to link in the sector into which the player
  10. # is when you want the door to open.
  11. #
  12. # [YB] with Tim Longo on Bass.
  13. #
  14. # 8/28/97 Added clicking sounds [DB]
  15. #
  16. #
  17. # (C) 1997 LucasArts Entertainment Co. All Rights Reserved
  18.  
  19.  
  20. symbols
  21.  
  22. message     startup     
  23. message     activated
  24. message     arrived     
  25. message     blocked     
  26.  
  27. thing       door0                            linkid=0 mask=0x405
  28. thing       door1                            linkid=1 mask=0x405
  29. thing       door2                            linkid=2 mask=0x405
  30. thing       door3                            linkid=3 mask=0x405
  31.  
  32. flex        movespeed=8.0
  33. flex        sleeptime=2.0
  34. flex        lightvalue=0.5
  35. sector      correctside
  36.  
  37. #sound       dialogue=mj61026.wav
  38. sound       wav0=lvrclik2.wav
  39.  
  40. sector      doorsector                       local
  41. int         numdoors                         local
  42. int         doorstatus                       local
  43. int         movestatus                       local
  44. int         opened=0                         local
  45. int         said_locked=0                    local
  46.  
  47. end
  48.  
  49. # ========================================================================================
  50.  
  51. code
  52.  
  53. startup:
  54.    if (door0 >= 0) numdoors = numdoors + 1;
  55.    if (door1 >= 0) numdoors = numdoors + 1;
  56.    if (door2 >= 0) numdoors = numdoors + 1;
  57.    if (door3 >= 0) numdoors = numdoors + 1;
  58.  
  59.    doorsector = getthingsector(door0);
  60.    sectoradjoins(doorsector, 0);
  61.    sectorlight(doorsector, lightvalue, 0.0);       // add some light to door sector
  62.    return;
  63.  
  64. # ........................................................................................
  65.  
  66. activated:
  67.    if((opened == 1) || (GetThingSector(GetSourceRef()) == correctside))
  68.    {
  69.       call checkstatus;
  70.       if (movestatus) return;
  71.       if (doorstatus == 0)
  72.       {              // all pieces are at frame 0
  73.          sectoradjoins(doorsector, 1);
  74.          call open_doors;
  75.          opened = 1;
  76.          }
  77.    }
  78.    else
  79. //   if (said_locked == 0)
  80.       {
  81. //      playsoundlocal(dialogue, 1, 0, 132);
  82. //      jkPrintUNIString(-1, 61026);
  83. //      said_locked=1;
  84. //      }
  85. //      else
  86. //      {
  87.       PlaySoundThing(wav0, door0, 1.0, -1, -1, 0);
  88.       }
  89.  
  90.  
  91.    return;
  92.  
  93. # ........................................................................................
  94.  
  95. arrived:
  96.    call checkstatus;
  97.    if (movestatus) return;
  98.    if (doorstatus == numdoors) {          // all pieces are at frame 1
  99.       sleep(sleeptime);
  100.       call close_doors;
  101.    } else if (doorstatus == 0) {          // all pieces are at frame 0
  102.       sectoradjoins(doorsector, 0);
  103.    }
  104.    return;
  105.  
  106. # ........................................................................................
  107.  
  108. blocked:
  109.    call open_doors;
  110.    return;
  111.  
  112. # ........................................................................................
  113.  
  114. open_doors:
  115.    movetoframe(door0, 1, movespeed);
  116.    if (door1 >= 0) movetoframe(door1, 1, movespeed);
  117.    if (door2 >= 0) movetoframe(door2, 1, movespeed);
  118.    if (door3 >= 0) movetoframe(door3, 1, movespeed);
  119.    return;
  120.  
  121.  
  122. close_doors:
  123.    movetoframe(door0, 0, movespeed);
  124.    if (door1 >= 0) movetoframe(door1, 0, movespeed);
  125.    if (door2 >= 0) movetoframe(door2, 0, movespeed);
  126.    if (door3 >= 0) movetoframe(door3, 0, movespeed);
  127.    return;
  128.  
  129. checkstatus:
  130.    movestatus = ismoving(door0);
  131.    if (door1 >= 0) movestatus = movestatus + ismoving(door1);
  132.    if (door2 >= 0) movestatus = movestatus + ismoving(door2);
  133.    if (door3 >= 0) movestatus = movestatus + ismoving(door3);
  134.  
  135.    doorstatus = getcurframe(door0);
  136.    if (door1 >= 0) doorstatus = doorstatus + getcurframe(door1);
  137.    if (door2 >= 0) doorstatus = doorstatus + getcurframe(door2);
  138.    if (door3 >= 0) doorstatus = doorstatus + getcurframe(door3);
  139.    return;
  140.  
  141.  
  142. end
  143.  
  144.